// 只是一个js文件 不是组件

// 引入依赖
import {createStore} from 'redux'

// 初始化数据
const initState = { // 类似vuex中的state
    name: 'Tom',
    age: 18,
    list: [
        {id: 1, name: 'apple', price: 5, num: 2},
        {id: 2, name: 'orange', price: 3, num: 3},
        {id: 3, name: 'banana', price: 3, num: 2},
    ]
}

// 修改数据的函数-reducer （纯函数）
// 第一个参数是state，要修改的数据对象，默认值是initState
// 第二个参数是action，确定如何修改
const reducer = (state = initState, action) => {
    switch (action.type) {
        case 'ageAdd' :
            // console.log(state, action);
            // 此处应该返回一个完整的数据
            return {
                ...state, // 复制整个state，数据还是老的
                age: state.age + 1 // 修改对应的数据
            }
        
        case 'nameChange':
            console.log(state, action);
            return {
                ...state,
                name: action.val
            }
        case 'delGoods':
            var arr = [...state.list];
            // 根据id 删除商品
            var arr1 = arr.filter(item => {
                return item.id !== action.id
            })
            return {
                ...state,
                list: arr1
            }
        default:
         return state
    }
}

// 创建仓库
const store = createStore(reducer);

// 暴露
export default store
